package org.pjmi.conversormonedaletra.commons;

import java.util.ArrayList;
import java.util.Collection;

/**
 * Clase para las variables usadas en la escritura de una cantidad en
 * pesos.
 * @author Pedro Josue Mendoza Islas
 */
public final class NombresNumerosPesos {
    public static final String MILLONES = "MILLONES";
    public static final String MILLON = "MILLON";
    public static final String MIL = "MIL";
    public static final String CIEN = "CIEN";
    public static final String CIENTOS = "CIENTOS";
    public static final String PESOS = "PESOS";
    public static final String PESO = "PESO";
    public static final String MONEDA_NACIONAL = "/100 M.N.";
    public static final String CERO = "CERO";
    public static final String UN = "UN";
    public static final String DOS = "DOS";
    public static final String TRES = "TRES";
    public static final String CUATRO = "CUATRO";
    public static final String CINCO = "CINCO";
    public static final String SEIS = "SEIS";
    public static final String SIETE = "SIETE";
    public static final String OCHO = "OCHO";
    public static final String NUEVE = "NUEVE";
    public static final String DIEZ = "DIEZ";
    public static final String VEINTI = "VEINTI";
    public static final String VEINTE = "VEINTE";
    public static final String TREINTA = "TREINTA";
    public static final String CUARENTA = "CUARENTA";
    public static final String CINCUENTA = "CINCUENTA";
    public static final String SESENTA = "SESENTA";
    public static final String SETENTA = "SETENTA";
    public static final String OCHENTA = "OCHENTA";
    public static final String NOVENTA = "NOVENTA";
    public static final String ONCE = "ONCE";
    public static final String DOCE = "DOCE";
    public static final String TRECE = "TRECE";
    public static final String CATORCE = "CATORCE";
    public static final String QUINCE = "QUINCE";
    public static final String ESPACIO = " ";
    public static final String Y = "Y";
    public static final String CIENTO = "CIENTO";
    public static final String DOSCIENTOS = "DOSCIENTOS";
    public static final String TRESCIENTOS = "TRESCIENTOS";
    public static final String CUATROCIENTOS = "CUATROCIENTOS";
    public static final String QUINIENTOS = "QUINIENTOS";
    public static final String SEISCIENTOS = "SEISCIENTOS";
    public static final String SETECIENTOS = "SETECIENTOS";
    public static final String OCHOCIENTOS = "OCHOCIENTOS";
    public static final String NOVECIENTOS = "NOVECIENTOS";
    public static final String[] unidades = {MILLONES, MIL, PESOS};
    
    /**
     * Metodo para retornar una ArrayList del tipo String con los
     * nombres de los numeros dentro del rango de las unidades,
     * es decir los nombres de los numeros del 1 al 9.
     * @return Los nombres del conjunto de UNIDADES.
     */
    public static ArrayList<String> nombresUnidades() {
        ArrayList<String> nombres = new ArrayList<String>();
        nombres.add(CERO);
        nombres.add(UN);
        nombres.add(DOS);
        nombres.add(TRES);
        nombres.add(CUATRO);
        nombres.add(CINCO);
        nombres.add(SEIS);
        nombres.add(SIETE);
        nombres.add(OCHO);
        nombres.add(NUEVE);
        return nombres;
    }
    
    /**
     * Metodo para retornar una Collection del tipo String con los
     * nombres de los numeros dentro del rango de las decenas,
     * es decir los nombres de los numeros del 10 al 90.
     * @return Los nombres del conjunto de DECENAS.
     */
    public static ArrayList<String> nombresDecenas() {
        ArrayList<String> nombres = new ArrayList<String>(11);        
        nombres.add(null);
        nombres.add(DIEZ);
        nombres.add(VEINTE);
        nombres.add(TREINTA);
        nombres.add(CUARENTA);
        nombres.add(CINCUENTA);
        nombres.add(SESENTA);
        nombres.add(SETENTA);
        nombres.add(OCHENTA);
        nombres.add(NOVENTA);
        return nombres;
    }
    
    /**
     * Metodo para retornar una Collection del tipo String con los
     * nombres de los numeros dentro del rango de las centenas,
     * es decir los nombres de los numeros del 100 al 900.
     * @return Los nombres del conjunto de CENTENAS.
     */
    public static ArrayList<String> nombresCentenas() {
        ArrayList<String> nombres = new ArrayList<String>(10);
        nombres.add(null);
        nombres.add(CIENTO);
        nombres.add(DOSCIENTOS);
        nombres.add(TRESCIENTOS);
        nombres.add(CUATROCIENTOS);
        nombres.add(QUINIENTOS);
        nombres.add(SEISCIENTOS);
        nombres.add(SETECIENTOS);
        nombres.add(OCHOCIENTOS);
        nombres.add(NOVECIENTOS);
        return nombres;
    }
    
    /**
     * Metodo para retornar una Collection del tipo String con los
     * nombres de los numeros que no se pueden escribir solo con la union
     * de su parte UNIDAD y su parte DECENA.
     * @return Los nombres del conjunto de los numeros especiales.
     */
    public static ArrayList<String> nombresEspeciales() {
        ArrayList<String> nombres = new ArrayList<String>(6);        
        nombres.add(null);
        nombres.add(ONCE);
        nombres.add(DOCE);
        nombres.add(TRECE);
        nombres.add(CATORCE);
        nombres.add(QUINCE);
        return nombres;
    }
}
